1
超越線性搜尋:關聯容器的威力
AI037Lesson 15
00:00

想像一個圖書館,書籍不是按到達日期排列,而是根據一個 通用金鑰。這正是從順序存取轉變為 關聯容器的典範轉變。與逐行掃描 vector 不同,我們改用 mapset 以達到對數時間的查找效率($O(\log n)$)

1. 關聯的本質

在一個 map中,我們儲存 鍵值對。鍵可作為索引,類型可以是字串、自訂物件,或任何支援 嚴格弱次序的資料類型。而 set則僅儲存唯一鍵,是進行成員測試或過濾的理想工具。

向量(順序)集合(關聯)[0]"A"[1]"B"[2]"A"(重複)唯一過濾鍵:"A"鍵:"B"

2. 有序與無序

標準容器(mapset)會維護鍵的排序。 C++11 標準 引入了無序版本(unordered_map),它使用 雜湊函數 來實現平均 $O(1)$ 的效能。使用這些高效率的桶時,請留意 C++11 標誌 標誌。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>